<template>
  <van-tag 
    :type="getType(status)" 
    :size="size"
    :mark="mark"
    :round="round"
    :color="customColor"
  >{{ getText(status) }}</van-tag>
</template>

<script>
export default {
  name: 'StatusTag',
  props: {
    status: {
      type: String,
      required: true
    },
    size: {
      type: String,
      default: 'medium'
    },
    mark: {
      type: Boolean,
      default: false
    },
    round: {
      type: Boolean,
      default: true
    },
    customColor: {
      type: String,
      default: ''
    },
    customText: {
      type: String,
      default: ''
    }
  },
  methods: {
    getType(status) {
      if (this.customColor) return '';
      
      const map = {
        // 物资状态
        'normal': 'success',
        'low': 'warning',
        'out': 'danger',
        'pending': 'primary',
        
        // 审批状态
        'approved': 'success',
        'rejected': 'danger',
        'processing': 'primary',
        'submitted': 'primary',
        'draft': 'default',
        
        // 请假状态
        'approved_leave': 'success',
        'pending_leave': 'primary',
        'rejected_leave': 'danger',
        'cancelled': 'default',
        
        // 通用状态
        'active': 'success',
        'inactive': 'default',
        'warning': 'warning',
        'error': 'danger',
        'info': 'primary'
      }
      return map[status] || 'default'
    },
    getText(status) {
      if (this.customText) return this.customText;
      
      const map = {
        // 物资状态
        'normal': '库存正常',
        'low': '库存不足',
        'out': '缺货',
        'pending': '处理中',
        
        // 审批状态
        'approved': '已通过',
        'rejected': '已拒绝',
        'processing': '审批中',
        'submitted': '待审批',
        'draft': '草稿',
        
        // 请假状态
        'approved_leave': '已批准',
        'pending_leave': '审批中',
        'rejected_leave': '已拒绝',
        'cancelled': '已取消',
        
        // 通用状态
        'active': '激活',
        'inactive': '未激活',
        'warning': '警告',
        'error': '错误',
        'info': '信息'
      }
      return map[status] || status
    }
  }
}
</script> 